package com.atguigu.ssyx.product.controller;

import com.atguigu.ssyx.model.product.Category;
import com.atguigu.ssyx.model.product.SkuInfo;
import com.atguigu.ssyx.product.service.CategoryService;
import com.atguigu.ssyx.product.service.SkuInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.w3c.dom.stylesheets.LinkStyle;
import sun.misc.Request;

import java.util.List;

/**
 * @author 杨林
 * @create 2023-08-02 9:54 星期三
 * description:
 */

/**
 * 供远程调用使用，提供获取商品信息的方法
 */
@Api(tags = "供远程调用使用，提供获取商品信息的方法")
@RestController
@RequestMapping("/api/product")
public class ProductInnerController {
    
    @Autowired
    private CategoryService categoryService;
    
    
    @Autowired
    private SkuInfoService skuInfoService;

    /**
     * 根据分类id获取分类信息
     * @param categoryId
     * @return
     */
    @ApiOperation(value = "根据分类id获取分类信息")
    @GetMapping("/inner/getCategory/{categoryId}")
    public Category getCategory(@PathVariable("categoryId") Long categoryId){
        return categoryService.getById(categoryId);
    }


    /**
     * 根据skuId获取Sku信息
     * @return
     */
    @ApiOperation(value = "根据skuId获取Sku信息")
    @GetMapping("/inner/getSkuInfo/{skuId}")
    public SkuInfo getSkuInfo(@PathVariable("skuId") Long skuId){
        return skuInfoService.getById(skuId);
    }

    /**
     * 根据id批量获取Sku信息
     * @return
     */
    @ApiOperation(value = "根据id批量获取Sku信息")
    @PostMapping("/inner/findSkuInfoList")
    public List<SkuInfo> findSkuInfoList(@RequestBody List<Long> skuIdList){
        return skuInfoService.findSkuInfoList(skuIdList);
    }

    /**
     * 根据关键字获取sku列表
     * @param keyword
     * @return
     */
    @ApiOperation(value = "根据关键字获取sku列表")
    @GetMapping("/inner/findSkuInfoByKeyWord/{keyword}")
    public List<SkuInfo> findSkuInfoByKeyWord(@PathVariable("keyword") String keyword){
        return skuInfoService.findSkuInfoByKeyword(keyword);
    }

    /**
     * 根据ids批量获取分类信息
     * @param categoryIds
     * @return
     */
    @ApiOperation(value = "批量获取分类信息")
    @PostMapping("/inner/findCategoryList")
    public List<Category> findCategoryList(@RequestBody List<Long> categoryIds){
        List<Category> list = categoryService.findCategoryList(categoryIds);
        return list;
    }
}
